Deriving a Lazy Abstract Machine
نویسنده
چکیده
We derive a simple abstract machine for lazy evaluation of the lambda calculus, starting from Launchbury's natural semantics. Lazy evaluation here means non-strict evaluation with sharing of argument evaluation, that is, call-by-need. The machine we derive is a lazy version of Krivine's abstract machine, which was originally designed for call-by-name evaluation. We extend it with datatype constructors and base values, so the nal machine implements all dynamic aspects of a lazy functional language.
منابع مشابه
Implementing Disequality in the Lazy Functional Logic Language Babel
x Abstract In this paper 1 , we investigate an implementation of a lazy functional logic language (in particular the language BABEL MR88,MR92]) which uses disequality constraints for solving equations and building answers. We specify a new operational semantics which combines lazy narrowing with disequality constraints and we deene an abstract machine tailored to the execution of BABEL programs...
متن کاملA Chemical Abstract Machine for Graph Reduction
Graph reduction is an implementation technique for the lazy λ-calculus. It has been used to implement many non-strict functional languages, such as lazy ML, Gofer and Miranda. Parallel graph reduction allows for concurrent evaluation. In this paper, we present parallel graph reduction as a Chemical Abstract Machine, and show that the resulting testing semantics is adequate wrt testing equivalen...
متن کاملImplementing a Lazy Functional Logic Language with Disequality Constraints
In this paper, we investigate an implementation of a lazy functional logic language (in particular the language BABEL MR88, MR92]) which uses disequality constraints for solving equations and building answers. We specify a new operational semantics which combines lazy narrowing with disequality constraints and we deene an abstract machine tailored to the execution of BABEL programs according to...
متن کاملClassical Call-by-Need Sequent Calculi: The Unity of Semantic Artifacts
We systematically derive a classical call-by-need sequent calculus, which does not require an unbounded search for the standard redex, by using the unity of semantic artifacts proposed by Danvy et al. The calculus serves as an intermediate step toward the generation of an environment-based abstract machine. The resulting abstract machine is context-free, so that each step is parametric in all b...
متن کاملA functional correspondence between call-by-need evaluators and lazy abstract machines
We bridge the gap between compositional evaluators and abstract machines for the lambda-calculus, using closure conversion, transformation into continuation-passing style, and defunctionalization of continuations. This article is a spin-off of our article at PPDP 2003, where we consider call by name and call by value. Here, however, we consider call by need. We derive a lazy abstract machine fr...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید
ثبت ناماگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید
ورودعنوان ژورنال:
- J. Funct. Program.
دوره 7 شماره
صفحات -
تاریخ انتشار 1997